package com.cloud.test02;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

/**
 * @author DELL
 * 常用方法：
 * 获取请求时的完整路径 (从HTTP开始，到？结束)
 * 获取请求时的部分路径 （从项目的站点名开始，到？结束）
 * 获取请求时的参数字符串 （从？后面开始到结尾）
 * 获取请求方式 （get or post）
 * 获取当前协议版本
 * 获取项目的站点名（对外访问路径）
 */
@WebServlet(value = {"/RTest01","/rtest01","/Rtest01","/rTest01"})
public class RequestTest01 extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //常用方法：
        // * 获取请求时的完整路径 (从HTTP开始，到？结束)
        String url = req.getRequestURL() + "";
        System.out.println("获取请求时的完整路径 :"+url);
        // * 获取请求时的部分路径 （从项目的站点名开始，到？结束）
        String uri = req.getRequestURI();
        System.out.println("获取请求时的部分路径 "+uri);
        // * 获取请求时的参数字符串 （从？后面开始到结尾）
        String queryString = req.getQueryString();
        System.out.println("获取请求时的参数字符串 "+queryString);
        // * 获取请求方式 （get or post）
        String method = req.getMethod();
        System.out.println("获取请求方式 "+method);
        // * 获取当前协议版本
        String protocol = req.getProtocol();
        System.out.println("获取当前协议版本 "+protocol);
        // * 获取项目的站点名（对外访问路径）
        String webApp = req.getContextPath();
        System.out.println("获取项目的站点名 "+webApp);

        /*获取请求的参数*/

        // * 获取指定名称的参数，返回字符串 ****
        String uName = req.getParameter("userName");
        String uPassword = req.getParameter("userPassword");
        System.out.println("uName = "+uName+" uPassword = "+uPassword);

        // * 获取指定名称的参数组，返回数组（一般用于复选框）
        String[] habits = req.getParameterValues("habit");
        if(habits != null && habits.length > 0){
            for(String habit:habits){
                System.out.println("爱好有： "+habit);
            }
        }

        System.out.println("---------------------------------------------");
    }
}
